//
//  AppDelegate.swift
//  WeiBo01
//
//  Created by mac on 16/1/5.
//  Copyright © 2016年 Han. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        window?.makeKeyAndVisible()
        
        
        //这个试图控制器的切换不懂的同学,一定要敲 3+ 遍以上
        //!!!!!!!!!!!!!!!!!!!!!!!!!第二个更改控制器的逻辑 -- 是否更新,是否登录
        
        //        SinaAccountViewModel.shareInstance.isLogin ? (已经登录) : (未登录)
        
        /*
        
        三目的伪代码
        根制图控制 = 判断是否登录 ? (如果登录判断是否是新版本 -> 见 第二步) : (直接进入访客试图[SinaTabBarController])
        
        
        -> 这个是第二步
        返回的默认控制器 = 是否有新版本 ? (有新版本 -> 显示新特性页面 SinaNewFeatureTureController) : (无新版本 -> 进入欢迎界面 SinaWelcomeViewController)
        
        
        */
        
        
        //1. 如果登录,跳转到版本检测
        //  如果没有登录,直接跳转到 访客试图
        window?.rootViewController =  SinaAccountViewModel.shareInstance.isLogin ? (retureDefaultViewController() ):(SinaTabBarViewController())
        
        
        
        // 2.  检测版本
        //         checkVerson() ? (新特性页面):(欢迎页面)
        //        retureDefaultViewController()
        
        //!!!!!!!!!!!!!!!!!!!!!!!!!!!第一个更改控制器的逻辑 -- 是否认证
        
        // 设置root控制器
        //        window?.rootViewController = SinaTabBarViewController()
        //SinaWelcomeViewController()
        //SinaNewFeatureCollectionViewController()
        //
        
        // 注册一个通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeVC:", name:kNotificationEnter, object: nil)
        
        setupAppreance()
        
        return true
    }
    
    
    private func setupAppreance(){
        // 这个方法,在我们一设置根控制的时候,就要设置好
        
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        
        // 先获取到当前的 TabBar,然后设置 tintColor(选中的颜色)
        UITabBar.appearance().tintColor = UIColor.orangeColor()
    }
    
    //MARK:--通知处理方法
    func changeVC(noti: NSNotification){
        
        //
        printLog("改变根控制器")
        
//        printLog(noti.object)
        // noti.object 如果有值 就是 认证界面发过来的通知
        // 如果说 没有值,就是 欢迎页面发过来的
        if noti.object == nil {
            // 欢迎页面发过来 ,应该跳转到主页
            
            window?.rootViewController = SinaTabBarViewController()
        } else {
            //认证界面发过来的通知 ,应该跳转到欢迎界面
            window?.rootViewController = SinaWelcomeViewController()
        }
        
        
    }
    
    //
    func retureDefaultViewController() ->UIViewController{
        // 如果是新版本,返回一个 新特性的控制
        // 如果不是新版本,直接跳转到欢迎页面
        return checkVerson() ? (SinaNewFeatureCollectionViewController ()) : (SinaWelcomeViewController())
    }
    
    // 检测版本的方法
    private func checkVerson() -> Bool {
        
        let key = "version"
        // 1 先获取保存的版本号
        let oldVersion = NSUserDefaults.standardUserDefaults().objectForKey(key) as? String
        // 2 获取当前的版本号
        let newVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        // 2.1 保存一下 新版本
        NSUserDefaults.standardUserDefaults().setObject(newVersion, forKey: key)
        // 3 比较
        // object 需要转换成 String来比较
        if let oldV = oldVersion {
            
            // newVerson > OldV 显示我们的新特性 ==== 降序
            if newVersion.compare(oldV) == NSComparisonResult.OrderedDescending {
                
                return true
                
            } else {
                return false
            }
            
        }
        
        // 这个情况是 没有 旧版本
        return true
        
    }
    // 良好编程习惯,remove 通知
    // 相当于 OC里的 dealloc
    deinit{
        
        removeObserver(self, forKeyPath: kNotificationEnter)
        
    }

}





